#ifndef FILE_MANAGER_H
#define FILE_MANAGER_H

#include <string>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm> // 为 std::min 提供支持
#include <mutex> // 引入互斥锁头文件
#include <queue>
#include <condition_variable>
#include <chrono>
#include <iomanip>
#include <sstream>
#include <tuple>
#include <thread>

class FileManager
{
public:
	// 构造函数
	FileManager();
	// 析构函数
	~FileManager();

	int storeDataToCSV(uint16_t chNo, double* voltageList, uint32_t data_Length, const std::string& filePath);
	int storeDataToDat(uint16_t chNo, double* voltageList, uint32_t data_Length, const std::string& filePath);
	int convertDatToCSV(uint16_t chNo, const std::string& datFilePath);

	// 启动线程
	void StartFileManagerThreads();
	// 停止线程  
	void StopFileManagerThreads();

private:
	std::mutex outFileMutex[4]; // 定义一个 mutex 数组来保护每个通道的文件流  数量可以根据需要调整

	std::vector<std::thread> FileManager_threads;  // 存储所有线程
	std::atomic<bool> stop_loop;  // 控制线程停止的标志
	// 辅助函数：每个线程要执行的任务
	void FileManagerTask(int chNo);
	void processVoltageData(uint16_t chNo, const std::string& filePath);
};

extern FileManager fileManager;

#endif // FILE_MANAGER_H
